package com.sky.mapper;

import com.github.pagehelper.Page;
import com.sky.entity.Category;
import org.apache.ibatis.annotations.*;
import org.springframework.web.bind.annotation.PostMapping;

import java.util.List;

/*
 * 分类管理的mapper
 * mapper层的作用：
 *  执行对应的sql语句查询数据库里的数据
 * */
@Mapper
public interface CategoryMapper {
    /**
     * 查询所有分类
     *
     * @param void
     * @return Page<Category>
     * @info 执行sql语句往Category表中查询所有分类
     */
    public Page<Category> selectAll(String name, Integer type);

    /**
     * 删除分类
     *
     * @param id
     * @return void
     * @info 执行sql语句往Category表中删除分类
     */
    @Delete("delete from category where id=${id}")
    public int deleteCategoryById(Long id);

    /**
     * 启用或者禁用分类
     *
     * @param id
     * @return void
     * @info 执行sql语句往Category表中修改分类状态
     */
    @Update("update category set status=#{status},update_time=#{updateTime},update_user=#{updateUser} where id=#{id}")
    public void updateCategoryStatus(Category category);


    /**
     * 新增分类
     *
     * @param category
     * @return void
     * @info 执行sql语句往Category表中添加分类
     */

    @Insert("insert into category (name,sort,type,create_user,create_time,status,update_time,update_user) values (#{name},#{sort},${type},#{createUser},#{createTime},${status},#{updateTime},#{updateUser})")
    public void insertCategory(Category category);

    /**
     * 更新分类
     *
     * @param category
     * @return void
     * @info 执行sql语句往Category表中修改分类
     */
    @Update("update category set name=#{name},sort=#{sort},update_time=#{updateTime},update_user=#{updateUser} where id=#{id}")
    public void updateCategory(Category category);


    /**
     * 根据分类的类型type查询分类
     *
     * @param type
     * @return category
     * @info 执行sql语句往Category表中根据type查询对应的分类
     */
    @Select("select * from category where type=#{type}")
    public List<Category> selectCategoryByType(Integer type);
}
